• Post Reply Bookmark Topic Watch Topic
  • New Topic
programming forums Java Mobile Certification Databases Caching Books Engineering Micro Controllers OS Languages Paradigms IDEs Build Tools Frameworks Application Servers Open Source This Site Careers Other Pie Elite all forums
this forum made possible by our volunteer staff, including ...
Marshals:
  • Campbell Ritchie
  • Jeanne Boyarsky
  • Ron McLeod
  • Paul Clapham
  • Liutauras Vilda
Sheriffs:
  • paul wheaton
  • Rob Spoor
  • Devaka Cooray
Saloon Keepers:
  • Stephan van Hulst
  • Tim Holloway
  • Carey Brown
  • Frits Walraven
  • Tim Moores
Bartenders:
  • Mikalai Zaikin

New Java-Based Language

 
Greenhorn
Posts: 2
  • Number of slices to send:
    Optional 'thank-you' note:
Hi! I'm trying to create a new Java-based language with JavaCC. Actually, I can say that I want to write java using my own syntax. I want to use Java libraries in my own language. I want to use this language to do my graduation project at my university.

I also want to use spring boot in this language.

for example in my own language,

@GetMapping(“/findAll”)
def findAll do
     userService.findAll
end

I want to use spring boot.

How can I do this? Is JavaCC the right option? I can also do a language conversion like TypeScript - JavaScript. Can you give me an idea about this subject? Thanks to everyone.
 
Marshal
Posts: 79393
377
  • 1
  • Number of slices to send:
    Optional 'thank-you' note:
Welcome to the Ranch

Daan Van Den Berg wrote:Hi! I'm trying to create a new . . . language with JavaCC. . . . use spring boot . . . Is JavaCC the right option? . . . .

Until proven otherwise, you should not be thinking about that sort of thing now. Those are mostly implementation details, which will simply cause you confusion.
I suggest you start by writing what you want the language to do, and writing a grammar for it. When you have done that, you can consider writing a compiler. If your grammar is completely context‑free, you can use standard tools like lex and yacc or Antlr to create a compiler. Do you intend to compile the language to Java® bytecode or ordinary code?
 
Saloon Keeper
Posts: 15608
366
  • Number of slices to send:
    Optional 'thank-you' note:

Campbell wrote:you should not be thinking about that sort of thing now. Those are mostly implementation details, which will simply cause you confusion.


I suggest you start by writing a grammar for it.


In my opinion, when it comes to compiler development, those two suggestions are contradictory.

To write a grammar, you'll typically want to settle on a parser generator before you start, because otherwise you'll be spending a lot of time and effort rewriting your grammar later.

I don't have experience with JavaCC, but it appears to be a sensible choice. I can also vouch for ANTLR. Honestly, unless you're developing a production-ready compiler, the exact choice of parser generator doesn't matter that much. I do strongly recommend a parser generator that generates LL(k) or recursive descent parsers, as those are typically easier to use if you don't have a lot of experience with compiler development. Again, you should be fine with both JavaCC and ANTLR.

I discourage the use of yacc if this is your first compiler. It generates LALR parsers, and those are difficut to understand if you don't have experience wih them.
 
Stephan van Hulst
Saloon Keeper
Posts: 15608
366
  • Number of slices to send:
    Optional 'thank-you' note:

Daan Van Den Berg wrote:How can I do this?


One step at a time.

Start by writing a very basic grammar for the smallest legal compilation unit. See if you can get your parser generator to produce an output.

For instance, if I were to create a compiler for Java, I'd start by writing a grammar that accepts the following source file:

As Campbell already mentioned, it's very important to decide whether you want to compile your source files to Java, or to Java bytecode. It's probably easier to compile to Java when you're first starting out, but the choice mostly depends on what skills you want to practice with this project.

Try to compile your basic compilation unit to a .java or to a .class file. Then expand your project one feature at a time.

And if you're stuck, don't be afraid to ask questions.
 
Daan Van Den Berg
Greenhorn
Posts: 2
  • Number of slices to send:
    Optional 'thank-you' note:
Thank you very much for your helps.

My goal is to write an API in my own "X" language in the easiest way and develop a project using React.

Since it would take a long time to write all the functions myself, I was thinking of using java libraries directly, but I don't know how to do it.

I am a student who always develops software with high level languages, so I don't know much about this.

Should I write a compiler that translates the code I write in my language into Java or should I create a language where I write everything myself?
 
Saloon Keeper
Posts: 10779
86
  • Number of slices to send:
    Optional 'thank-you' note:
Alternatives...

One alternative is  to write a code generator based on some input other than a full programming language. As an example, I created a code generator that would query a database schema and build a set of classes based on the CRUD model with one subset for each table. The generated code has saved me many, many hours over the years and has resulted in very clean application code. The generated code is just Java and the API of the generated  code is how the application uses it.

Another approach is something similar to JSP where Java code and (in this case) JSP code is intermixed. A preprocessor is used to either pass the Java through to the generated file or expand the JSP into some logic implemented in Java and included in the generated file. This means you can use any library and incorporate any Java  syntax.

Both of these  approaches can be developed incrementally which will speed up development time.
 
With a little knowledge, a cast iron skillet is non-stick and lasts a lifetime.
reply
    Bookmark Topic Watch Topic
  • New Topic
vceplus-200-125    | boson-200-125    | training-cissp    | actualtests-cissp    | techexams-cissp    | gratisexams-300-075    | pearsonitcertification-210-260    | examsboost-210-260    | examsforall-210-260    | dumps4free-210-260    | reddit-210-260    | cisexams-352-001    | itexamfox-352-001    | passguaranteed-352-001    | passeasily-352-001    | freeccnastudyguide-200-120    | gocertify-200-120    | passcerty-200-120    | certifyguide-70-980    | dumpscollection-70-980    | examcollection-70-534    | cbtnuggets-210-065    | examfiles-400-051    | passitdump-400-051    | pearsonitcertification-70-462    | anderseide-70-347    | thomas-70-533    | research-1V0-605    | topix-102-400    | certdepot-EX200    | pearsonit-640-916    | itproguru-70-533    | reddit-100-105    | channel9-70-346    | anderseide-70-346    | theiia-IIA-CIA-PART3    | certificationHP-hp0-s41    | pearsonitcertification-640-916    | anderMicrosoft-70-534    | cathMicrosoft-70-462    | examcollection-cca-500    | techexams-gcih    | mslearn-70-346    | measureup-70-486    | pass4sure-hp0-s41    | iiba-640-916    | itsecurity-sscp    | cbtnuggets-300-320    | blogged-70-486    | pass4sure-IIA-CIA-PART1    | cbtnuggets-100-101    | developerhandbook-70-486    | lpicisco-101    | mylearn-1V0-605    | tomsitpro-cism    | gnosis-101    | channel9Mic-70-534    | ipass-IIA-CIA-PART1    | forcerts-70-417    | tests-sy0-401    | ipasstheciaexam-IIA-CIA-PART3    | mostcisco-300-135    | buildazure-70-533    | cloudera-cca-500    | pdf4cert-2v0-621    | f5cisco-101    | gocertify-1z0-062    | quora-640-916    | micrcosoft-70-480    | brain2pass-70-417    | examcompass-sy0-401    | global-EX200    | iassc-ICGB    | vceplus-300-115    | quizlet-810-403    | cbtnuggets-70-697    | educationOracle-1Z0-434    | channel9-70-534    | officialcerts-400-051    | examsboost-IIA-CIA-PART1    | networktut-300-135    | teststarter-300-206    | pluralsight-70-486    | coding-70-486    | freeccna-100-101    | digitaltut-300-101    | iiba-CBAP    | virtuallymikebrown-640-916    | isaca-cism    | whizlabs-pmp    | techexams-70-980    | ciscopress-300-115    | techtarget-cism    | pearsonitcertification-300-070    | testking-2v0-621    | isacaNew-cism    | simplilearn-pmi-rmp    | simplilearn-pmp    | educationOracle-1z0-809    | education-1z0-809    | teachertube-1Z0-434    | villanovau-CBAP    | quora-300-206    | certifyguide-300-208    | cbtnuggets-100-105    | flydumps-70-417    | gratisexams-1V0-605    | ituonline-1z0-062    | techexams-cas-002    | simplilearn-70-534    | pluralsight-70-697    | theiia-IIA-CIA-PART1    | itexamtips-400-051    | pearsonitcertification-EX200    | pluralsight-70-480    | learn-hp0-s42    | giac-gpen    | mindhub-102-400    | coursesmsu-CBAP    | examsforall-2v0-621    | developerhandbook-70-487    | root-EX200    | coderanch-1z0-809    | getfreedumps-1z0-062    | comptia-cas-002    | quora-1z0-809    | boson-300-135    | killtest-2v0-621    | learncia-IIA-CIA-PART3    | computer-gcih    | universitycloudera-cca-500    | itexamrun-70-410    | certificationHPv2-hp0-s41    | certskills-100-105    | skipitnow-70-417    | gocertify-sy0-401    | prep4sure-70-417    | simplilearn-cisa    |
http://www.pmsas.pr.gov.br/wp-content/    | http://www.pmsas.pr.gov.br/wp-content/    |