Projekat

Općenito

Profil

Akcije

Podrška #19469

Zatvoren

eclipse harbour syntax highlight, xtext

Dodano od Ernad Husremović prije više od 15 godina. Izmjenjeno prije oko 15 godina.

Status:
Odbačeno
Prioritet:
Normalan
Odgovorna osoba:
Kategorija:
-
Početak:
21.01.2010
Završetak:
% završeno:

0%

Procjena vremena:


Fajlovi

xtext.pdf (893 KB) xtext.pdf 0.7.2 Ernad Husremović, 23.01.2010 10:11

Povezani tiketi 1 (0 otvoreno1 zatvoren)

korelira sa developer toolbox - Podrška #19487: eclipse source, buildOdbačenoErnad Husremović23.01.2010

Akcije
Akcije #2

Izmjenjeno od Ernad Husremović prije više od 15 godina

Eclipse Modeling Framework Technology

The Eclipse Modeling Framework Technology (EMFT) project exists to incubate new technologies that extend or complement EMF.

Akcije #3

Izmjenjeno od Ernad Husremović prije više od 15 godina

EMFT Mint

The goal of Mint is to improve out-of-the-box Java developer experience when writing EMF-based software. This is accomplished by extending Java Development Tools (JDT) with EMF-specific enhancements. The initial contribution consists of filters and decorators for highlighting EMF-generated code, Java search integration, as well as editor enhancements for navigating from EMF models to generated Java code.

Akcije #5

Izmjenjeno od Ernad Husremović prije više od 15 godina

instalirao tmf xtext sdk na desk-c2

Akcije #6

Izmjenjeno od Ernad Husremović prije više od 15 godina

članak
o PDE (plugin development environment) iz 2005, ali izgleda i danas aktuelan

Akcije #9

Izmjenjeno od Ernad Husremović prije više od 15 godina

trebamo xtext sdk plugin i xtext antlr feature

Akcije #10

Izmjenjeno od Ernad Husremović prije više od 15 godina

ovdje sam brljao satima

sve dok nisam uklonio:

bringout@desk-c2:~$ mv runtime-EclipseApplication/ runtime-EclipseApplication.orig

pa novi napravio nisam mogao *.prg asocirati

Akcije #11

Izmjenjeno od Ernad Husremović prije više od 15 godina

još sahat sam danas radio sa xtext-om ... iako dosta po principu nabadanja, super je ovo stvar. može se sa njim bez problema napraviti harbour syntax aware editor.

Akcije #12

Izmjenjeno od Ernad Husremović prije više od 15 godina

ovaj grammar (harbour.xtext):

terminal ASCII : '0x' ('0'..'7') ('0'..'9'|'A'..'F');

terminal MATH_OPERATION : '+' | '*' | '-' | '/' | '%';

HbExpression :
  TerminalExpression ({Operation.left=current} 
    op=MATH_OPERATION right=HbExpression)?
;

TerminalExpression returns HbExpression:
  '(' HbExpression ')' |
  {StrLiteral} value=STRING |
  {IntLiteral} value=INT |
  {IdLiteral} value=ID
;

Include :
    '#include' includeURI=STRING;

Entity :
    HbVariable | HbClass | HbFunction | HbArgument | HbMethod;

SimpleType:
    'type' name=ID;

HbMethodDeclaration:
  'method' name=ID '()';

HbValue:
  STRING;

HbDataDeclaration:
  'data' name=ID ('init' HbValue)*;

HbClass :
    'class' name=ID
        ddecl+=HbDataDeclaration*
        mdecl+=HbMethodDeclaration*
    'endclass';

HbMethod :
  'method' name=ID
  'return';    

HbFunction :
    'function' name=ID '()'    
        ML_COMMENT*
        statements+=HbExpression*
    'return' (HbValue)*;

HbVariable :
    varname=STRING;

HbArgument :
    name=ID;

HbStatement : 
    HbExpression;

zna ovakav prg parsirati

#include "fmk.ch" 

class c1
   data var1
   data var2 init "00" 
   method m1()
   method m2()
endclass

function f2()
/*
  for a b c d
*/
1*5
-2
(800)
a+5
a1*b*c+(d-a)
/*
  for a b c d
*/
return "OK" 

function f1()
return

Akcije #19

Izmjenjeno od Ernad Husremović prije više od 15 godina

skoro da sam došao do toga da je gramatika upotrebljiva ali sam jedan java fajl izbrisao (mislio sam da se u src-gen svi fajlovi regenerišu ali to nije tačno):

grammar ba.out.bring.xtext.HarbourLanguage with org.eclipse.xtext.common.Terminals

generate harbourLanguage "http://www.out.ba/bring/xtext/HarbourLanguage" 

Model :
    (includes+=Include)*
    (elements+=Entity)+;

Entity :
    HbComment |  HbClass | HbFunction |  HbMethod;

/*    
terminal HB_STRING :
  ('"')('a'..'z'|'A'..'Z'|'_'|'0'..'9')*("'");

terminal HB_INT :
  ('0'..'9')+('.'('0'..'9')+)*;

terminal HB_ID : 
  ('^')?('a'..'z'|'A'..'Z'|'_') ('a'..'z'|'A'..'Z'|'_'|'0'..'9')*;
*/

ERNAD : 
 'h'? 'ernad';

/*
terminal HB_COMMENT_STAR: '*' -> '\n';
*/

terminal HB_INT :
  ('0'..'9')+('.'('0'..'9')+)*;

terminal WS : (' '|'\t'|'\r'|'\n')+;

terminal ASCII : '0x' ('0'..'7') ('0'..'9'|'A'..'F');

terminal HB_UNARY_OPERATION : '!' | '-' | '@' | '&';

terminal HB_OPERATION :  '->' | '.or.' | '.and.' | '==' | '<=' | '>=' | '<>' | "$" | '=' | ':=' | '+=' | '-=' | '+' | '*' | '-' | '/' | '%';

/*
terminal HB_FOR : 'for' -> 'next';
*/

/*
terminal HB_DO_WHILE : 'do while' -> ('enddo'|'end');
*/

/*
terminal HB_IF : 'if' -> ('end'|'endif');
*/

terminal HB_CLASS : 'class'|'CLASS';

terminal HB_END_CLASS : 'endclass' | 'end class'| 'END CLASS' | 'ENDCLASS'| 'END';

terminal HB_COMMENT2: '//' .* '\n';

HbComment:
  ML_COMMENT |
  HB_COMMENT2;

HbIf :
  'if' ifexpr=HbAllExpression
   (ifstatements+=HbStatement)*
  ('elseif'
   (elsestatements+=HbStatement)*  
  )*  
  ('else'
   (elsestatements+=HbStatement)*  
  )? 
  ('end' | 'endif')
;

HbDoCase  :
  'do case'
   'case' cexpr+=HbAllExpression
      (cstatements+=HbStatement*) 
      ('return' (retval=HbAllExpression)?)?
   ('case' cexpr+=HbAllExpression
      (cstatements+=HbStatement*) 
      ('return' (retval=HbAllExpression)?)?)*
   ('otherwise'
      (cstatements+=HbStatement*) 
      ('return' (retval=HbAllExpression)?)?)?      
  ('endcase' | 'end')
;  

HbDoWhile :
  ('do while' | 'while') doexpr=HbAllExpression
   (whilestatements+=HbStatement)*
  ('end' | 'enddo')
;

HbFor :
  'for' setexpr=HbAllExpression 'to' toexpr=HbAllExpression
    (forstatements+=HbStatement)* 
  'next'
;

HbStatement :
  HbAllExpression |
  HbComment |
  HbIf |
  HbDoWhile |
  HbFor |
  HbDoCase |
  HbDb
;

HbAllExpression :
  HbExpression |
  HbArrExpression
;

HbExpression :
  TerminalExpression ({Operation.left=current} 
    op=HB_OPERATION right=HbExpression)?
;

TerminalExpression returns HbExpression :
  '(' HbExpression ')' |
  HB_UNARY_OPERATION unaryexpr=HbExpression |
  {StrLiteral} value=(STRING) |
  {IntLiteral} value=(HB_INT) |
  {IdLiteral} value=(ID) |
  {IdFuncCall} value=HbFuncCall |
  {IdNil} value=('nil'|'NIL') |
  {IdBool} value=('.t.'|'.T.'|'.f.'|'.F')
;

HbArrExpression :
 arrexpr=HbExpression '[' HbArg ']'
;

HbDb:
  HbSetOrder |
  HbSeek |
  HbUse
;

HbSetOrder :
  ('set order to tag'|'SET ORDER TO TAG') tagexpr=HbExpression;

HbSeek :
  ('seek'|'SEEK') seekexpr=HbExpression;

HbUse :
  ('USE'|'use'|'usex'|'USEX'|'MY USE') seekexpr=HbExpression ('new'|'NEW')?
;

Include :
    '#include' includeURI=STRING;

HbArg :
  (ID (',' ID)*)?
;

HbArgs :
('(' HbArg ')' | '()')
;

HbVarDeclaration :
('public'|'local'|'private') HbArg;

HbDataDeclaration:
  'data' name=ID ('init' initval=HbExpression)*;

HbMethodDeclaration:
  'method' extends=[HbMethod] '()';

HbClass :
    HB_CLASS name=ID
        ddecl+=HbDataDeclaration*
        mdecl+=HbMethodDeclaration*
    HB_END_CLASS;

HbMethod returns HbMethod:
  'method' name=ID HbArgs
     vardecls+=HbVarDeclaration*
     statements+=HbExpression*
  'return' (retval=HbExpression)?;

HbFunction returns HbFunction:
    'function' name=ID HbArgs
        (vardecls+=HbVarDeclaration)*
        (statements+=HbStatement)*
    'return' (retval=HbExpression)?;

HbFuncCall :
    name=[HbFunction] HbArgs
; 

HbVariable :
    varname=STRING;

HbArgument :
    name=ID;

Akcije #20

Izmjenjeno od Ernad Husremović prije oko 15 godina

  • Naslov promijenjeno iz eclipse syntax highlight, xtext u eclipse harbour syntax highlight, xtext
  • Status promijenjeno iz Dodijeljeno u Odbačeno
Akcije

Također dostupno kao Atom PDF